package com.anfeng.cms.service.attendance;

import com.anfeng.cms.domain.attendance.AfRosterDetail;
import com.baomidou.mybatisplus.service.IService;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 吴朋
 * @since 2019-07-18
 */
public interface IAfRosterDetailService extends IService<AfRosterDetail> {

    /**
     * 新增员工排班记录
     * @param rosterDetail 排班详情
     * @return
     */
    String addRosterInfoDetail(AfRosterDetail rosterDetail);

    /**
     * 根据排班id获取该排班的人员数量
     * @param rosterId 排班id
     * @return 员工数量
     */
    int getRosterInfoDetailCounts(String rosterId);

    /**
     * 获取制定排班下的所有排班人员信息
     * @param rosterId 排班id
     * @return 人员排班
     */
    List<AfRosterDetail> getRosterInfoDetails(String rosterId);

    /**
     * 分页查询排班中 人员信息
     * @param rosterId 排班id
     * @param page 当前页
     * @param pageSize 每页数量
     * @return 人员排班信息
     */
    List<AfRosterDetail> getRosterInfoDetailByPage(String rosterId, Integer page, Integer pageSize);

    /**
     * 批量修改 长期排班信息
     * @param addEmployeeNos 添加到排班中的员工编号数组
     * @param removeEmployeeNos 移除排班的员工编号数组
     * @return 是否操作成功 -1 失败 1 成功
     */
    int batchUpdateLongTermRosterDetailInfos(List<String> addEmployeeNos, List<String> removeEmployeeNos);

    /**
     * 批量修改临时排班人员信息
     * @param addEmployeeNos 新增临时排班人员信息
     * @param removeEmployeeNos 移除临时排班人员信息
     * @return 是否操作成功 -1 失败  1 成功
     */
    int batchUpdateInterimRosterDetailInfos(List<String> addEmployeeNos, List<String> removeEmployeeNos);

    /**
     * 根据员工编号和班次id 获取员工排班信息
     * @param empNo 员工编号
     * @param rosterId 排班id
     * @return 员工排班信息
     */
    AfRosterDetail getRosterInfoDetailByEmpNoAndRosterId(String empNo, String rosterId);

    /**
     * 根据排班id修改排班详情中的信息
     * @param rosterId 排班id
     * @param name 班次名
     * @return 是否成功 -1 失败 1 成功
     */
    int updateRosterInfo(String rosterId, String name);
}
